import { useFormState } from "react-use-form-state"; import { Flex } from "rebass/styled-components"; import React, { useState } from "react"; import { NextPage } from "next"; import { useRouter } from "next/router"; import axios from "axios"; import AppWrapper from "../../components/AppWrapper"; import { TextInput } from "../../components/Input"; import { Button } from "../../components/Button"; import Text, { H2 } from "../../components/Text"; import { Col } from "../../components/Layout"; import Icon from "../../components/Icon"; import { APIv2 } from "../../consts"; interface Props { protectedLink?: string; } const ProtectedPage: NextPage = () => { const router = useRouter(); const [loading, setLoading] = useState(false); const [formState, { password }] = useFormState<{ password: string }>(); const [error, setError] = useState(); const onSubmit = async (e) => { e.preventDefault(); const { password } = formState.values; if (!password) { return setError("Password must not be empty."); } setError(""); setLoading(true); try { const { data } = await axios.post( `${APIv2.Links}/${router.query.id}/protected`, { password } ); window.location.replace(data.target); } catch ({ response }) { setError(response.data.error); } setLoading(false); }; return ( {!router.query.id ? (

404 | Link could not be found.

) : (

Protected link

Enter the password to be redirected to the link. {error} )}
); }; ProtectedPage.getInitialProps = async ({ req }) => { return { protectedLink: req && (req as any).protectedLink }; }; export default ProtectedPage;